From efc381a55124b12fc74ed8117283f11367c9372a Mon Sep 17 00:00:00 2001
From: Paulo Flabiano Smorigo <pfsmorigo@linux.vnet.ibm.com>
Date: Thu, 25 Sep 2014 19:33:39 -0300
Subject: Disable VSX instruction

VSX bit is enabled by default for Power7 and Power8 CPU models,
so we need to disable them in order to avoid instruction exceptions.
Kernel will activate it when necessary.

* grub-core/kern/powerpc/ieee1275/startup.S: Disable VSX.

Also-By: Adhemerval Zanella <azanella@linux.vnet.ibm.com>
Also-By: Colin Watson <cjwatson@debian.org>

Origin: other, https://lists.gnu.org/archive/html/grub-devel/2014-09/msg00078.html
Last-Update: 2015-01-27

Patch-Name: ppc64el-disable-vsx.patch
---
 grub-core/kern/powerpc/ieee1275/startup.S | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/grub-core/kern/powerpc/ieee1275/startup.S b/grub-core/kern/powerpc/ieee1275/startup.S
index 21c884b43..de9a9601a 100644
--- a/grub-core/kern/powerpc/ieee1275/startup.S
+++ b/grub-core/kern/powerpc/ieee1275/startup.S
@@ -20,6 +20,8 @@
 #include <grub/symbol.h>
 #include <grub/offsets.h>
 
+#define MSR_VSX 0x80
+
 .extern __bss_start
 .extern _end
 
@@ -28,6 +30,16 @@
 	.globl	start, _start
 start:
 _start:
+
+
+    /* Disable VSX instruction */
+	mfmsr  0
+	oris   0,0,MSR_VSX
+	/* The "VSX Available" bit is in the lower half of the MSR, so we
+	   don't need mtmsrd, which in any case won't work in 32-bit mode.  */
+	mtmsr  0
+	isync
+
 	li      2, 0
 	li      13, 0
 
